<?php

class Compras_InsumoController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();
        $parametrosNamespace->parametrosBusqueda = null;
        $parametrosNamespace->cantidadFilas = null;
        $parametrosNamespace->jsGrip = '/js/grillasmodulos/compras/gridInsumo.js';
        $parametrosNamespace->Application_Model_DbTable = "Application_Model_DbTable_Insumo";
        $parametrosNamespace->busqueda = "DESC_INSUMO_PRODUCTO";
        $parametrosNamespace->lock ();
    }

	public function listarAction() {
		$this->_helper->viewRenderer->setNoRender ( true );
		
		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock ();
		
		$cantidadFilas = $this->getRequest ()->getParam ( "rows" );

		if (! isset ( $cantidadFilas )) {
			$cantidadFilas = 10;
		}
		
		$parametrosNamespace->cantidadFilasPeriodo = $cantidadFilas;
		
		$page = $this->getRequest ()->getParam ( "page" );
		if (! isset ( $page )) {
			$page = 1 ;
		}
		
		$this->view->headScript ()->appendFile ( $this->view->baseUrl () . '/js/bootstrap.js' );
	 	$this->view->headScript ()->appendFile ( $this->view->baseUrl () . '/js/gridPlanes.js' );
	 	
	 	$ser = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable); 
                $fields = array(
                                'INSUMO_PRODUCTO.COD_INSUMO_PRODUCTO',
                                'INSUMO_PRODUCTO.DESC_INSUMO_PRODUCTO',
                                'INSUMO_PRODUCTO.COD_INSUMO_PRODUCTO',
                                'TIPO_INSUMO.TIPO_INSUMO_DESCRIPCION');

                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
                $where = $parametrosNamespace->parametrosBusqueda;		

                $order = array('INSUMO_PRODUCTO.DESC_INSUMO_PRODUCTO ASC');
                $result = $ser->getRowsJoin($fields, array('Application_Model_DbTable_TipoInsumo'), null,$where, $order,null);


                $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
                echo $this->_helper->json ( $pagina );
	}
	private function obtenerPaginas($result,$cantidadFilas,$page){
		$this->_paginator = Zend_Paginator::factory ($result);
	 	$this->_paginator->setItemCountPerPage ( $cantidadFilas );
	 	$this->_paginator->setCurrentPageNumber($page);
		$pagina ['rows'] = array ();
		foreach ( $this->_paginator as $item ) {
			$arrayDatos ['cell'] = array($item["COD_INSUMO_PRODUCTO"],null,trim(utf8_encode($item["DESC_INSUMO_PRODUCTO"])),
                                                        trim(utf8_encode($item["TIPO_INSUMO_DESCRIPCION"])),$item["COD_TIPO_INSUMO"]);
			$arrayDatos ['columns'] = array("id","modificar","nombre","tipo_insumo","DES_INSUMO_IVAN");
			array_push ( $pagina ['rows'],$arrayDatos);
		}

                if($cantidadFilas == 0) $cantidadFilas = 10;
                
		$pagina ['records'] = count ( $result );
		$pagina ['page'] = $page;
		$pagina ['total'] = ceil ( $pagina ['records'] / $cantidadFilas );

		if($pagina['records'] == 0){
			$pagina ['mensajeSinFilas'] = true;
		}

		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock ();
		$parametrosNamespace->listadoImpuestos = $pagina ['rows'];
		$parametrosNamespace->lock ();

		return $pagina;
	}

    public function buscarAction(){
        $this->_helper->viewRenderer->setNoRender ( true );

        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();

        $cantidadFilas = $this->getRequest ()->getParam ( "rows" );
        if (! isset ( $cantidadFilas )) {
                $cantidadFilas = $parametrosNamespace->cantidadFilas;
        }
        $page = $this->getRequest ()->getParam ( "page" );
        if (! isset ( $page )) {
                $page = 1 ;
        }

        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);
//        $servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        $where =array();
        if($rowData->descripcion != null){                
                array_push($where, " UPPER($parametrosNamespace->busqueda) like '".strtoupper(trim($rowData->descripcion))."%'");
        }
        if($rowData->comboTipoInsumo != null and $rowData->comboTipoInsumo <> -1){
                array_push($where, " INSUMO_PRODUCTO.COD_TIPO_INSUMO = ".$rowData->comboTipoInsumo);
        }        
                
        $parametrosNamespace->parametrosBusqueda = $where;
        $parametrosNamespace->lock ();


$ser = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable); 
$fields = array(
                'INSUMO_PRODUCTO.COD_INSUMO_PRODUCTO',
                'INSUMO_PRODUCTO.DESC_INSUMO_PRODUCTO',
                'INSUMO_PRODUCTO.COD_TIPO_INSUMO',
                'TIPO_INSUMO.TIPO_INSUMO_DESCRIPCION');

//$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
//$where = $parametrosNamespace->parametrosBusqueda;		
$order = array('INSUMO_PRODUCTO.DESC_INSUMO_PRODUCTO ASC');
$result = $ser->getRowsJoin($fields, array('Application_Model_DbTable_TipoInsumo'), null,$where, $order,null);        
        
//        $result = $servCon->getRowsByWhere($where);
        $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
        //$jsondata = $this->_helper->json ( $pagina );
        echo $this->_helper->json ( $pagina );
        //echo $jsondata;
    }

    public function eliminarAction(){
		$this->_helper->viewRenderer->setNoRender ( true );
		$id = $this->getRequest ()->getParam ( "id" );
                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		try{
                    $db = Zend_Db_Table::getDefaultAdapter();
                    $db->beginTransaction();
                    $servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
                    $servCon->deleteRowById(array("COD_INSUMO_PRODUCTO"=>$id));
                    $db->commit();
		    echo json_encode(array("result" => "EXITO"));
	    }catch( Exception $e ) {
	    	echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
			$db->rollBack();
		}
	}

	public function guardarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
            $rowData = json_decode($json_rowData);
            $applicationModel = new Application_Model_Insumo();
            self::almacenardatos($applicationModel,$rowData);
	}

	public function modificarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
            $rowData = json_decode($json_rowData);
            $rowClass = new Application_Model_Insumo();
            if($rowData->idRegistro != null){
                $rowClass->setCod_Insumo($rowData->idRegistro);
            }
            self::almacenardatos($rowClass,$rowData);
	}

        public function almacenardatos($rowClass,$rowData){          
     	try{
                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
     		$service = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        	$db = Zend_Db_Table::getDefaultAdapter();
        	$db->beginTransaction();
                $rowClass->setDesc_Insumo(trim(utf8_decode($rowData->descripcion)));
                $rowClass->setTipo_Insumo($rowData->tipoInsumo);                
                $result = $service->saveRow($rowClass);
	    	$db->commit();
	    	echo json_encode(array("result" => "EXITO"));
        }catch( Exception $e ) {
	    	echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
		$db->rollBack();
	}
    }
    
    public function tipoinsumodataAction() {
        $this->_helper->viewRenderer->setNoRender ( true );
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                 ->from(array('C' => 'TIPO_INSUMO'), array('distinct(C.COD_TIPO_INSUMO)', 'C.TIPO_INSUMO_DESCRIPCION'))
                 ->order(array('C.TIPO_INSUMO_DESCRIPCION'));
        $result = $db->fetchAll($select);
        $htmlResult = '<option value="-1">---Seleccione---</option>';
        foreach ($result as $arr) {

                         $htmlResult .= '<option value="'.$arr["COD_TIPO_INSUMO"].'">' .trim(utf8_encode($arr["TIPO_INSUMO_DESCRIPCION"])).'</option>';	
        }
        echo  $htmlResult;
     }	    
}

